#ifndef PATH_H_
#define PATH_H_

#include <vector>
#include <map>
#include "point.h"
#include "path_iterator.h"

class Path : public std::vector<Point>{
	private:
		unsigned int id;
		typedef std::map<int,PathIterator> PathIterators;
		PathIterators paths;
	public:
		Path();
		~Path();

		unsigned int createPathIterator(unsigned int step,bool loop);

		void deletePathIterator(unsigned int id);

		void stepPathIterator(unsigned int id);

		Point getCurrent(unsigned int id);

		void addFollowerToPathIterator(unsigned int id,IFollower* follower);

		void removeFollowerFromPathIterator(unsigned int id,IFollower* follower);

		void modifyStep(unsigned int id,unsigned int delta_step);
};

#endif /* PATH_H_ */
